package com.example.demo.service.system;

import com.example.demo.common.page.PageResult;
import com.example.demo.dto.system.BatchOrderDTO;
import com.example.demo.dto.system.SubsystemQueryDTO;
import com.example.demo.entity.system.SysSubsystem;

import java.util.List;
import java.util.Map;

/**
 * 子系统管理服务接口
 */
public interface SysSubsystemService {
    
    /**
     * 查询子系统列表
     *
     * @param subsystem 子系统信息
     * @return 子系统集合
     */
    List<SysSubsystem> selectSubsystemList(SysSubsystem subsystem);
    
    /**
     * 分页查询子系统列表
     *
     * @param queryDTO 查询参数
     * @return 分页结果
     */
    PageResult<SysSubsystem> selectSubsystemPage(SubsystemQueryDTO queryDTO);
    
    /**
     * 根据系统编码查询子系统
     *
     * @param systemCode 系统编码
     * @return 子系统对象
     */
    SysSubsystem selectSubsystemByCode(String systemCode);
    
    /**
     * 新增子系统
     *
     * @param subsystem 子系统信息
     * @return 结果
     */
    int insertSubsystem(SysSubsystem subsystem);
    
    /**
     * 修改子系统
     *
     * @param subsystem 子系统信息
     * @return 结果
     */
    int updateSubsystem(SysSubsystem subsystem);
    
    /**
     * 修改子系统状态
     *
     * @param systemCode 系统编码
     * @param status 状态
     * @return 结果
     */
    int updateSubsystemStatus(String systemCode, Integer status);
    
    /**
     * 批量修改子系统显示顺序
     *
     * @param orderDTO 排序信息
     * @return 结果
     */
    int updateSubsystemOrder(BatchOrderDTO orderDTO);
    
    /**
     * 删除子系统
     *
     * @param systemCode 系统编码
     * @return 结果
     */
    int deleteSubsystemByCode(String systemCode);
    
    /**
     * 批量删除子系统
     *
     * @param systemCodes 系统编码数组
     * @return 结果
     */
    int deleteSubsystemByCodes(String[] systemCodes);
    
    /**
     * 获取子系统统计信息
     *
     * @return 统计信息
     */
    Map<String, Object> getSubsystemStatistics();
    
    /**
     * 检查系统编码是否唯一
     *
     * @param systemCode 系统编码
     * @return 结果
     */
    boolean checkSystemCodeUnique(String systemCode);
} 